from flask_restful import inputs
#根据inputs的验证方法可知手机验证函数即接受参数，验证后返回

import re

def check_mobile(value):

    if not re.match(r'1[3-9]\d{9}',value):
        return ValueError('手机号格式不正确')
        # raise ValueError('{} is not a valid mobile'.format(mobile_str))

    return value

from cache.channel import AllChannelCache
#GET /app/v1_0/articles?channel_id=xxx&timestamp=xxx&with_top=xxx
# 获取channel_id对应的文章列表时候，需要对channel_id进行验证，查询是否存在

def check_channel_id(value):
    '''
    获取到字符串转int类型查询
    判断频道是否<零（不符合）
              =零（０为默认频道，根据需求修改，此处暂定为获取１的内容）
              >零（判断是否在所有频道的列表中）
    把接收到的频道值返回
    :param value:
    :return:
    '''
    try:
        _channel_id = int(value)
    except Exception:
        raise ValueError('Invalid channel id')
    #没有抛出异常时，会走else
    else:
        if _channel_id < 0 :
            raise ValueError('Invalid channel id.')
        if _channel_id == 0:
            _channel_id = 1  #由于推荐没有数据，为了看到效果设置推荐频道id为1
            return _channel_id
        else:
            #查询是否在所有频道中，在查询缓存中添加exist方法
            result = AllChannelCache.exists(_channel_id)
            if result:
                return _channel_id
            else:
                raise ValueError('Invalid channel id.')
